package com.bbva.kyfb.kyfbdaohostfo.servicios.host.pggptw42_1_1_3;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.bbva.jee.arq.spring.core.auditoria.Auditable;
import com.bbva.jee.arq.spring.core.auditoria.InformacionAuditable;
import com.bbva.jee.arq.spring.core.host.ExcepcionTransaccion;
import com.bbva.jee.arq.spring.core.host.ServicioTransacciones;
import com.googlecode.ehcache.annotations.Cacheable;
import com.googlecode.ehcache.annotations.TriggersRemove;

/**
 * Transacci&oacute;n <code>PGGPTW42</code>
 * 
 * @see PeticionTransaccionPggptw42_1_1_3
 * @see RespuestaTransaccionPggptw42_1_1_3
 */
@Component
public class TransaccionPggptw42_1_1_3 {
	
	@Autowired
	private ServicioTransacciones servicioTransacciones;
	
	@Auditable({InformacionAuditable.ARGUMENTOS, InformacionAuditable.RESULTADO, InformacionAuditable.DURACION})
	public RespuestaTransaccionPggptw42_1_1_3 invocar(PeticionTransaccionPggptw42_1_1_3 transaccion) throws ExcepcionTransaccion {
		return servicioTransacciones.invocar(PeticionTransaccionPggptw42_1_1_3.class, RespuestaTransaccionPggptw42_1_1_3.class, transaccion);
	}
	
	@Auditable({InformacionAuditable.ARGUMENTOS, InformacionAuditable.RESULTADO, InformacionAuditable.DURACION})
	@Cacheable(cacheName = "cacheTransaccionPggptw42_1_1_3")
	public RespuestaTransaccionPggptw42_1_1_3 invocarCache(PeticionTransaccionPggptw42_1_1_3 transaccion) throws ExcepcionTransaccion {
		return servicioTransacciones.invocar(PeticionTransaccionPggptw42_1_1_3.class, RespuestaTransaccionPggptw42_1_1_3.class, transaccion);
	}
	
	@Auditable(InformacionAuditable.DURACION)
	@TriggersRemove(cacheName = "cacheTransaccionPggptw42_1_1_3", removeAll = true)
	public void vaciarCache() {}
		
}